jQuery(
	function($) {

		$(document).ready(function() {
			var contentButton = [];
			var contentTop = [];
			var content = [];
			var lastScrollTop = 0;
			var scrollDir = '';
			var itemClass = '';
			var itemHover = '';
			var menuSize = null;
			var stickyHeight = 0;
			var stickyMarginB = 0;
			var currentMarginT = 0;
			var topMargin = 0;
			$(window).scroll(function(event) {
				var st = $(this).scrollTop();
				if (st > lastScrollTop) {
					scrollDir = 'down';
				} else {
					scrollDir = 'up';
				}
				lastScrollTop = st;
			});
			$.fn.stickUp = function(options) {
				// adding a class to users div
				$(this).addClass('stuckMenu');
				//getting options
				var objn = 0;
				if (options != null) {
					for (var o in options.parts) {
						if (options.parts.hasOwnProperty(o)) {
							content[objn] = options.parts[objn];
							objn++;
						}
					}
					if (objn == 0) {
						console.log('error:needs arguments');
					}

					itemClass = options.itemClass;
					itemHover = options.itemHover;
					if (options.topMargin != null) {
						if (options.topMargin == 'auto') {
							topMargin = parseInt($('.stuckMenu').css('margin-top'));
						} else {
							if (isNaN(options.topMargin) && options.topMargin.search("px") > 0) {
								topMargin = parseInt(options.topMargin.replace("px", ""));
							} else if (!isNaN(parseInt(options.topMargin))) {
								topMargin = parseInt(options.topMargin);
							} else {
								console.log("incorrect argument, ignored.");
								topMargin = 0;
							}
						}
					} else {
						topMargin = 0;
					}
					menuSize = $('.' + itemClass).size();
				}
				stickyHeight = parseInt($(this).height());
				stickyMarginB = parseInt($(this).css('margin-bottom'));
				currentMarginT = parseInt($(this).next().closest('div').css('margin-top'));
				vartop = parseInt($(this).offset().top);
				//$(this).find('*').removeClass(itemHover);
			}
			$(document).on('scroll', function() {
				varscroll = parseInt($(document).scrollTop());
				if (menuSize != null) {
					for (var i = 0; i < menuSize; i++) {
						contentTop[i] = $('#' + content[i] + '').offset().top;

						function bottomView(i) {
							contentView = $('#' + content[i] + '').height() * .4;
							testView = contentTop[i] - contentView;
							//console.log(varscroll);
							if (varscroll > testView) {
								$('.' + itemClass).removeClass(itemHover);
								$('.' + itemClass + ':eq(' + i + ')').addClass(itemHover);
							} else if (varscroll < 50) {
								$('.' + itemClass).removeClass(itemHover);
								$('.' + itemClass + ':eq(0)').addClass(itemHover);
							}
						}
						if (scrollDir == 'down' && varscroll > contentTop[i] - 50 && varscroll < contentTop[i] + 50) {
							$('.' + itemClass).removeClass(itemHover);
							$('.' + itemClass + ':eq(' + i + ')').addClass(itemHover);
						}
						if (scrollDir == 'up') {
							bottomView(i);
						}
					}
				}



				if (vartop < varscroll + topMargin) {
					$('.stuckMenu').addClass('isStuck');
					$('.stuckMenu').next().closest('div').css({
						'margin-top': stickyHeight + stickyMarginB + currentMarginT + 'px'
					}, 10);
					$('.stuckMenu').css("position", "fixed");
					$('.isStuck').css({
						top: '0px'
					}, 10, function() {

					});
				};

				if (varscroll + topMargin < vartop) {
					$('.stuckMenu').removeClass('isStuck');
					$('.stuckMenu').next().closest('div').css({
						'margin-top': currentMarginT + 'px'
					}, 10);
					$('.stuckMenu').css("position", "relative");
				};

			});
		});

	});
